#!/bin/bash

# Скрипт для автоматического извлечения версии из git-тегов
# Используется в package.json и других местах для определения версии

set -e

# Функция для получения версии из git-тегов
get_version() {
    # Проверяем, есть ли теги
    if git describe --tags --abbrev=0 >/dev/null 2>&1; then
        # Получаем последний тег
        local tag=$(git describe --tags --abbrev=0)
        
        # Убираем префикс 'v' если есть
        if [[ $tag == v* ]]; then
            echo "${tag#v}"
        else
            echo "$tag"
        fi
    else
        # Если тегов нет, возвращаем 0.0.0
        echo "0.0.0"
    fi
}

# Функция для получения версии с количеством коммитов
get_version_with_commits() {
    if git describe --tags --abbrev=0 >/dev/null 2>&1; then
        local describe=$(git describe --tags --abbrev=0 --always)
        echo "$describe"
    else
        echo "0.0.0"
    fi
}

# Функция для получения pre-release версии
get_prerelease_version() {
    if git describe --tags --abbrev=0 --match "v*.*.*" >/dev/null 2>&1; then
        local tag=$(git describe --tags --abbrev=0 --match "v*.*.*")
        if [[ $tag == v* ]]; then
            echo "${tag#v}"
        else
            echo "$tag"
        fi
    else
        echo "0.0.0"
    fi
}

# Основная логика
case "${1:-version}" in
    "version")
        get_version
        ;;
    "with-commits")
        get_version_with_commits
        ;;
    "prerelease")
        get_prerelease_version
        ;;
    "help"|"-h"|"--help")
        echo "Использование: $0 [version|with-commits|prerelease|help]"
        echo ""
        echo "Команды:"
        echo "  version      - Получить текущую версию из последнего тега (по умолчанию)"
        echo "  with-commits - Получить версию с количеством коммитов после тега"
        echo "  prerelease   - Получить pre-release версию"
        echo "  help         - Показать эту справку"
        echo ""
        echo "Примеры:"
        echo "  $0                    # 1.0.0"
        echo "  $0 with-commits        # 1.0.0-5-g1234567"
        echo "  $0 prerelease          # 1.0.0-alpha.1"
        ;;
    *)
        echo "Неизвестная команда: $1"
        echo "Используйте '$0 help' для справки"
        exit 1
        ;;
esac
